﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using CServiceStack.Plugins;
using CServiceStack.Plugins.CustomOperation;
using CServiceStack.ServiceHost;

namespace SomeServices
{
    //public class PriceEngineCounter : ICustomOperation
    //{
    //    private static int executing = 0;

    //    #region Implementation of ICustomOperation
    //    public bool IsValidRequest(IHttpRequest request, object requestDTO)
    //    {
    //        if (requestDTO == null) return false;
    //        return requestDTO is CounterRequestType;
    //    }

    //    public object ExecuteOperation(IHttpRequest request, object requestDTO)
    //    {
    //        var response = new CounterResponseType() { ServerName = Environment.MachineName };
    //        response.ResponseStatus = new ResponseStatusType() { Timestamp = DateTime.Now };
    //        try
    //        {
    //            if (!(requestDTO is CounterRequestType))
    //            {
    //                response.Count = 0;
    //                response.ResponseStatus.Ack = AckCodeType.Failure;
    //                response.ResponseStatus.Errors = new List<ErrorDataType>() { new ErrorDataType() { Message = "requestDTO类型错误!" } };
    //                return response;
    //            }
    //            var requestTmp = requestDTO as CounterRequestType;
    //            if (requestTmp.MethodEnum == MethodEnumType.Add)
    //            {
    //                response.Count = Interlocked.Increment(ref executing);
    //            }
    //            else if (requestTmp.MethodEnum == MethodEnumType.SUB)
    //            {
    //                response.Count = Interlocked.Decrement(ref executing);
    //            }
    //            else if (requestTmp.MethodEnum == MethodEnumType.View)
    //            {
    //                response.Count = executing;
    //            }
    //            else
    //            {
    //                response.Count = 0;
    //                response.ResponseStatus.Ack = AckCodeType.Warning;
    //                response.ResponseStatus.Errors = new List<ErrorDataType>() { new ErrorDataType() { Message = "MethodEnum类型错误!" } };
    //                return response;
    //            }
    //            response.ResponseStatus.Ack = AckCodeType.Success;
    //        }
    //        catch (Exception ex)
    //        {
    //            response.ResponseStatus.Ack = AckCodeType.Failure;
    //            response.ResponseStatus.Errors = new List<ErrorDataType>(1) { };
    //            ErrorDataType data = new ErrorDataType();
    //            data.Message = ex.Message + ex.StackTrace;
    //            response.ResponseStatus.Errors.Add(data);
    //        }
    //        return response;
    //    }

    //    public Type RequestDTOType
    //    {
    //        get { return typeof(CounterRequestType); }
    //    }

    //    public string OperationRestPath
    //    {
    //        get { return "_plus"; }
    //    }
    //    #endregion
    //}


    
}
